/*
 * Graph.h
 *
 *  Created on: 24/apr/2013
 *      Authors: Ialenti Andrea, Marangon Fabio
 */

#ifndef GRAPH_H_
#define GRAPH_H_

#include "StatusCodes.h"
#include "Types.h"

//	This function is used to generate a random graph.
Status genRandGraph(Graph *g, int size, int seed);

//	This function is used to import a graph from a TSP-lib text file.
Status importGraph(const Config *cfg, const char *fileName, Graph *g, bool nodePerm, bool verbose);

//	This function is used to restore original graph edges cost.
Status restoreOrigCosts(Graph *g);

//	Function used to remove a graph edge given its vertex indices.
Status rmEdge(Graph *g, int i, int j);

//	Permute the graph nodes randomly.
Status permNodes(const Config *cfg, Graph *g, bool verbose);

//	Function used to deep copy a graph.
Status cpGraph(const Graph *src, Graph *dest);

#endif /* GRAPH_H_ */
